package com.ctshk.rpc.air.req;

import com.ctshk.common.enums.AmadeusCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "QueryFlightOffersReq对象", description = "查询飞行航班优惠列表请求对象")
public class QueryFlightOfferReq implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("必填，城市/机场 国际航空运输协会代码 旅行者将从其出发，例如，波士顿的BOS")
    private String originLocationCode;
    @ApiModelProperty("必填，城市/机场 国际航空运输协会代码 旅行者前往的目的地，例如巴黎的PAR")
    private String destinationLocationCode;
    @ApiModelProperty("必填，旅行者从原点出发前往目的地的日期。日期在ISO 8601 YYYY-MM-DD格式，例如2017-12-25")
    private String departureDate;
    @ApiModelProperty("旅行者离开目的地返回原点的日期。如果未指定此参数，则仅找到单程路线。如果指定了此参数，则仅找到往返行程。日期在ISO 8601 YYYY-MM-DD格式，例如2018-02-28")
    private String returnDate;
    @ApiModelProperty("必填，默认值1，成人旅客人数（出发日期12岁以上）")
    private int adults;
    @ApiModelProperty("各自拥有独立座位的儿童旅行者（大于2岁且小于12岁）的数量。如果指定，则此数字应大于或等于0")
    private Integer children;
    @ApiModelProperty("婴儿旅客的数量（离开日年龄小于或等于2）。婴儿在成年旅客的腿上旅行，因此婴儿人数不得超过成人人数。如果指定，则此数字应大于或等于0")
    private Integer infants;
    @ApiModelProperty("可用值：ECONOMY, PREMIUM_ECONOMY, BUSINESS, FIRST，大部分飞行时间都应花在质量更高或更高的机舱中。可接受的旅行舱为经济舱，高级经济舱，商务舱或头等舱。如果未指定旅行等级，则搜索将考虑任何旅行等级")
    private AmadeusCode travelClass;
    @ApiModelProperty("如果指定，则航班报价将至少包括这些航空公司之一营销的每个航段。航空公司指定为国际航空运输协会航空公司代码 并以逗号分隔，例如6X，7X，8X")
    private String includedAirlineCodes;
    @ApiModelProperty("如果指定，则航班优惠将排除其中一家航空公司销售的所有航班。航空公司指定为国际航空运输协会航空公司代码 并以逗号分隔，例如6X，7X，8X")
    private String excludedAirlineCodes;
    @ApiModelProperty("默认值:false,如果设置为true，则搜索将仅查找从起点到目的地的航班，且之间不停靠")
    private boolean nonStop;
    @ApiModelProperty("航班优惠的首选货币。货币在ISO 4217 格式，例如EUR表示欧元")
    private String currencyCode;
    @ApiModelProperty("每位旅客的最高价格。默认情况下，没有限制。如果指定，则该值应为无小数的正数")
    private Integer maxPrice;
    @ApiModelProperty("默认值:250,返回的最大航班优惠数量。如果指定，则该值应大于或等于1")
    private Integer max;
}
